#pragma once

#include <memory>
#include "rtda/heap/class.h"
#include "rtda/heap/slots.h"

namespace jvm {
// namespace rtda {
namespace heap {

class Object {
private:
    std::weak_ptr<Class> m_pClass;
    std::weak_ptr<Slots> m_pFields;

public:
    Object(std::weak_ptr<Class> pClass);
    
    // Getters
    std::weak_ptr<Class> getClass() const;
    std::weak_ptr<Slots> getFields() const;
    
    // Type checking
    bool isInstanceOf(std::weak_ptr<Class> pClass) const;
};


} // namespace heap
// } // namespace rtda
} // namespace jvm
